package com.divemotor.ventarepuestosinternet.service;

import java.util.List;

import com.divemotor.ventarepuestosinternet.exception.DivemotorBusinessException;
import com.divemotor.ventarepuestosinternet.model.Departamento;
import com.divemotor.ventarepuestosinternet.model.Distrito;
import com.divemotor.ventarepuestosinternet.model.Provincia;
import com.divemotor.ventarepuestosinternet.model.Sucursal;
import com.divemotor.ventarepuestosinternet.model.Supervisor;
import com.divemotor.ventarepuestosinternet.model.Usuario;

 public interface SupervisorService {
	 
	 List<Supervisor> listarSupervisores() throws DivemotorBusinessException;
	 List<Supervisor> buscarUsuarios(Supervisor Supervisor) throws DivemotorBusinessException;
	 Supervisor obtenerPorId(Integer idSupervisor) throws DivemotorBusinessException;
	 Supervisor obtenerPorCodigo(Supervisor Supervisor) throws DivemotorBusinessException;
	 void insertar(Supervisor Supervisor) throws DivemotorBusinessException;
	 void actualizar(Supervisor Supervisor) throws DivemotorBusinessException;
	 void eliminar(Supervisor Supervisor) throws DivemotorBusinessException;
	 void listar()throws DivemotorBusinessException;
	 void eliminarPorUsuario(Usuario usuario)throws DivemotorBusinessException;
	 void migrarUsuario(Integer tipoDeusuario, Supervisor supervisor)throws DivemotorBusinessException;
	 Supervisor obtenerPorUsuario(Usuario user) throws DivemotorBusinessException;
	 Supervisor obtenerSupervisorAutenticado() throws DivemotorBusinessException;
	 List<Departamento> obtenerDepartamentosPorSupervisor()throws DivemotorBusinessException;
	 List<Provincia> obtenerProvinciasPorSupervisor(Integer idDepartamento)throws DivemotorBusinessException;
	 List<Distrito> obtenerDistritosPorSupervisor(Integer idprovincia)throws DivemotorBusinessException;
	 List<Sucursal> obtenerListaSucursales(Usuario obtenerUsuarioAutenticado)throws DivemotorBusinessException;
	 String obtenerSupervisorSucursal(Sucursal sucursal);
	
}
